package cn.wolfcode.service;

import cn.wolfcode.domain.OperateIntergralVo;
import io.seata.rm.tcc.api.BusinessActionContext;
import io.seata.rm.tcc.api.BusinessActionContextParameter;
import io.seata.rm.tcc.api.LocalTCC;
import io.seata.rm.tcc.api.TwoPhaseBusinessAction;

@LocalTCC
public interface IUsableIntegralService {
    /**
     * 减少积分
     */
    @TwoPhaseBusinessAction(name = "decrIntergralTry", commitMethod = "decrIntergralCommit", rollbackMethod = "decrIntergralRollback")
    void decrIntergralTry(@BusinessActionContextParameter(paramName = "operateIntergralVo") OperateIntergralVo operateIntergralVo, BusinessActionContext context);
    void decrIntergralCommit(BusinessActionContext context);
    void decrIntergralRollback(BusinessActionContext context);

    /**
     * 积分支付逻辑
     * @param operateIntergralVo
     */
    void decrIntergral(OperateIntergralVo operateIntergralVo);

    /**
     * 进行积分退款
     * @param operateIntergralVo
     */
    void inseIntergral(OperateIntergralVo operateIntergralVo);
}
